#pragma once

#include "../Factory/IFactoryAble.h"
#include "../Utility/HashString.h"

class IObject : public IFactoryAble
{

public:

	IObject(void) { }
	virtual ~IObject(void) = 0 { }

	virtual const HashString& GetObjectID() = 0;

	virtual HashString& GetName() = 0;

	virtual void Update(float delta) = 0;
};

class TestObject : public IObject
{
public:

	static const HashString OBJECTID;
	HashString name;

public:

	TestObject(void) { }
	virtual ~TestObject(void) { }

	virtual const HashString& GetObjectID() { return OBJECTID; }

	virtual HashString& GetName() { return name; }

	virtual void Update(float delta) { }
};